package com.corpgovernment.organization.mapper;


import com.corpgovernment.api.organization.model.commonInvoice.MbCommonInvoiceInfoRequestVo;
import com.corpgovernment.organization.common.mybatis.TkMapper;
import com.corpgovernment.organization.entity.db.MbCommonInvoiceInfo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @ClassName: MbCommonInvoiceInfoMapper
 * @description: TODO
 * @author: ezchen
 * @date: Created in 10:29 2019/8/13
 * @Version: 1.0
 **/
@Repository
public interface MbCommonInvoiceInfoMapper extends TkMapper<MbCommonInvoiceInfo> {

    /**
     * 查询上一次使用过的发票信息
     *
     * @param uid
     * @param orgId
     * @return
     */
    MbCommonInvoiceInfo getLastOne(@Param("uid") String uid, @Param("orgId") String orgId);

    /**
     * 根据关键词() 模糊查询 某人或者某公司的发票
     *
     * @param keyword
     * @param uid     不为空时候表示该个人添加的发票
     * @param orgId   uid 添加发票时候所属的组织
     * @param corpId  如果不通过uid查询使用，只查下改公司(不查询该公司下任何部门)的发票
     * @param type    0或者空全部 1表示公司添加的发票  2表示个人添加的发票
     * @return
     */
    List<MbCommonInvoiceInfo> list(@Param("keyword") String keyword, @Param("uid") String uid, @Param("orgId") String orgId, @Param("corpId") String corpId, @Param("type") Integer type);

    List<MbCommonInvoiceInfo> listOrgAndSef(MbCommonInvoiceInfoRequestVo mbCommonInvoiceInfoRequestVo);

    /**
     * 根据组织结构id查询发票信息
     *
     * @param orgId 组织结构id
     * @return 发票列表
     */
    List<MbCommonInvoiceInfo> listByOrgId(@Param("orgId") String orgId);

    /**
     * 查询所有的公司创建的发票信息
     *
     * @return 发票列表
     */
    List<MbCommonInvoiceInfo> listAllCorpInvoice(@Param("invoiceTitle") String invoiceTitle);

    /**
     * 批量更新(删除)
     *
     * @param list
     */
    void updateSelectiveBatch(@Param("list") List<MbCommonInvoiceInfo> list);

    /**
     * 批量插入
     *
     * @param list
     */
    void insertSelectiveBatch(@Param("list") List<MbCommonInvoiceInfo> list);

    /**
     * 删除组织ID下的所有发票地址
     *
     * @param orgId
     * @return
     */
    int deleteByOrgId(@Param("orgId") String orgId);
}
